#pragma region Copyright
/// <copyright>
/// Copyright (c) 2007 Ilia Shramko.
/// Released under the terms of the GNU General Public License.
/// </copyright>
#pragma endregion

#pragma once

//class AllocatorPresenter :
//    public CUnknown,
//    public IVMRSurfaceAllocator,
//    public IVMRImagePresenter,
//    public IVMRSurfaceAllocatorNotify
//{
//private:
//	enum {
//		UserID = 1,
//	};
//	CComPtr<IVMRSurfaceAllocator> _defaultSA;
//	CComPtr<IVMRImagePresenter> _defaultIP;
//	CComPtr<IVMRSurfaceAllocatorNotify> _defaultSAN;
//
//public:
//     AllocatorPresenter();
//    ~AllocatorPresenter();
//
//	HRESULT Initialize(IBaseFilter* vmr);
//
//    DECLARE_IUNKNOWN
//    STDMETHODIMP NonDelegatingQueryInterface(REFIID, void**);
//
//    // IVMRSurfaceAllocator
//    STDMETHODIMP AllocateSurface(DWORD_PTR dwUserID,
//		VMRALLOCATIONINFO* lpAllocInfo, DWORD* lpdwActualBackBuffers, LPDIRECTDRAWSURFACE7* lplpSurface);
//    STDMETHODIMP FreeSurface(DWORD_PTR dwUserID);
//    STDMETHODIMP PrepareSurface(DWORD_PTR dwUserID, LPDIRECTDRAWSURFACE7 lplpSurface, DWORD dwSurfaceFlags);
//    STDMETHODIMP AdviseNotify(IVMRSurfaceAllocatorNotify* lpIVMRSurfAllocNotify);
//
//    // IVMRSurfaceAllocatorNotify
//    STDMETHODIMP AdviseSurfaceAllocator(DWORD_PTR dwUserID, IVMRSurfaceAllocator* lpIVRMSurfaceAllocator);
//    STDMETHODIMP SetDDrawDevice(LPDIRECTDRAW7 lpDDrawDevice,HMONITOR hMonitor);
//    STDMETHODIMP ChangeDDrawDevice(LPDIRECTDRAW7 lpDDrawDevice,HMONITOR hMonitor);
//    STDMETHODIMP RestoreDDrawSurfaces();
//    STDMETHODIMP NotifyEvent(LONG EventCode, LONG_PTR lp1, LONG_PTR lp2);
//    STDMETHODIMP SetBorderColor(COLORREF clr);
//
//    // IVMRImagePresenter
//    STDMETHODIMP StartPresenting(DWORD_PTR dwUserID);
//    STDMETHODIMP StopPresenting(DWORD_PTR dwUserID);
//    STDMETHODIMP PresentImage(DWORD_PTR dwUserID, VMRPRESENTATIONINFO* lpPresInfo);
//	
//};